package edu.ou.herbarium.service;

import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import javax.activation.DataHandler;
import javax.xml.bind.annotation.XmlTransient;

/**
 * Specimen entity. @author MyEclipse Persistence Tools
 */

public class Specimen implements java.io.Serializable {

	// Fields

	private Integer specimenId;
	private ImageData imageData;
	private Folder folder;
	private ImageRaw imageRaw;
	private User user;
	private Institute institute;
	private String barcode;
	private String collectionCode;
	private Integer specimenType;
	private String scientificName;
	private String family;
	private String genus;
	private String infraspecificRank;
	private String infraspecificEpithet;
	private String specificEpithet;
	private Date recordDate;
	private String recordBy;
	private String recordEnterBy;
	private String scientificNameAuthorship;
	private String country;
	private String darwinCountry;
	private String county;
	private String stateProvince;
	private String town;
	private Date verbatimEventDate;
	private Date beginEventDate;
	private Date endEventDate;
	private String watermark;
	private String watermarkDate;
	private String sheetNotes;
	private String generalNotes;
	private String collectorNotes;
	private Integer writtenNumber;
	private Integer folderNumber;
	private String herbarium;
	private String identificationQualifier;
	private String recordNumber;
	private Date dateEntered;
	private Date dateLastModified;
	private Integer missingInfo;
	private Integer imageError;
	private Date exportDate;
	private Set<SpecCollectorMap> specCollectorMaps = new HashSet<SpecCollectorMap>(0);
	private DataHandler handler;

	// Constructors

	/** default constructor */
	public Specimen() {
	}

	/** minimal constructor */
	public Specimen(ImageRaw imageRaw, Integer imageError) {
		this.imageRaw = imageRaw;
		this.imageError = imageError;
	}

	/** full constructor */
	public Specimen(ImageData imageData, Folder folder, ImageRaw imageRaw,
			User user, Institute institute, String barcode,
			String collectionCode, Integer specimenType, String scientificName,
			String family, String genus, String infraspecificRank,
			String infraspecificEpithet, String specificEpithet,
			Date recordDate, String recordBy, String recordEnterBy,
			String scientificNameAuthorship, String country,
			String darwinCountry, String county, String stateProvince,
			String town, Date verbatimEventDate, Date beginEventDate,
			Date endEventDate, String watermark, String watermarkDate,
			String sheetNotes, String generalNotes, String collectorNotes,
			Integer writtenNumber, Integer folderNumber, String herbarium,
			String identificationQualifier, String recordNumber,
			Date dateEntered, Date dateLastModified, Integer missingInfo,
			Integer imageError, Date exportDate, Set<SpecCollectorMap> specCollectorMaps, DataHandler handler) {
		this.imageData = imageData;
		this.folder = folder;
		this.imageRaw = imageRaw;
		this.user = user;
		this.institute = institute;
		this.barcode = barcode;
		this.collectionCode = collectionCode;
		this.specimenType = specimenType;
		this.scientificName = scientificName;
		this.family = family;
		this.genus = genus;
		this.infraspecificRank = infraspecificRank;
		this.infraspecificEpithet = infraspecificEpithet;
		this.specificEpithet = specificEpithet;
		this.recordDate = recordDate;
		this.recordBy = recordBy;
		this.recordEnterBy = recordEnterBy;
		this.scientificNameAuthorship = scientificNameAuthorship;
		this.country = country;
		this.darwinCountry = darwinCountry;
		this.county = county;
		this.stateProvince = stateProvince;
		this.town = town;
		this.verbatimEventDate = verbatimEventDate;
		this.beginEventDate = beginEventDate;
		this.endEventDate = endEventDate;
		this.watermark = watermark;
		this.watermarkDate = watermarkDate;
		this.sheetNotes = sheetNotes;
		this.generalNotes = generalNotes;
		this.collectorNotes = collectorNotes;
		this.writtenNumber = writtenNumber;
		this.folderNumber = folderNumber;
		this.herbarium = herbarium;
		this.identificationQualifier = identificationQualifier;
		this.recordNumber = recordNumber;
		this.dateEntered = dateEntered;
		this.dateLastModified = dateLastModified;
		this.missingInfo = missingInfo;
		this.imageError = imageError;
		this.exportDate = exportDate;
		this.specCollectorMaps = specCollectorMaps;
		this.handler = handler;
	}

	// Property accessors

	public Integer getSpecimenId() {
		return this.specimenId;
	}

	public void setSpecimenId(Integer specimenId) {
		this.specimenId = specimenId;
	}

	public ImageData getImageData() {
		return this.imageData;
	}

	public void setImageData(ImageData imageData) {
		this.imageData = imageData;
	}

	@XmlTransient
	public Folder getFolder() {
		return this.folder;
	}

	public void setFolder(Folder folder) {
		this.folder = folder;
	}

	public ImageRaw getImageRaw() {
		return this.imageRaw;
	}

	public void setImageRaw(ImageRaw imageRaw) {
		this.imageRaw = imageRaw;
	}

	public User getUser() {
		return this.user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	public Institute getInstitute() {
		return this.institute;
	}

	public void setInstitute(Institute institute) {
		this.institute = institute;
	}

	public String getBarcode() {
		return this.barcode;
	}

	public void setBarcode(String barcode) {
		this.barcode = barcode;
	}

	public String getCollectionCode() {
		return this.collectionCode;
	}

	public void setCollectionCode(String collectionCode) {
		this.collectionCode = collectionCode;
	}

	public Integer getSpecimenType() {
		return this.specimenType;
	}

	public void setSpecimenType(Integer specimenType) {
		this.specimenType = specimenType;
	}

	public String getScientificName() {
		return this.scientificName;
	}

	public void setScientificName(String scientificName) {
		this.scientificName = scientificName;
	}

	public String getFamily() {
		return this.family;
	}

	public void setFamily(String family) {
		this.family = family;
	}

	public String getGenus() {
		return this.genus;
	}

	public void setGenus(String genus) {
		this.genus = genus;
	}

	public String getInfraspecificRank() {
		return this.infraspecificRank;
	}

	public void setInfraspecificRank(String infraspecificRank) {
		this.infraspecificRank = infraspecificRank;
	}

	public String getInfraspecificEpithet() {
		return this.infraspecificEpithet;
	}

	public void setInfraspecificEpithet(String infraspecificEpithet) {
		this.infraspecificEpithet = infraspecificEpithet;
	}

	public String getSpecificEpithet() {
		return this.specificEpithet;
	}

	public void setSpecificEpithet(String specificEpithet) {
		this.specificEpithet = specificEpithet;
	}

	public Date getRecordDate() {
		return this.recordDate;
	}

	public void setRecordDate(Date recordDate) {
		this.recordDate = recordDate;
	}

	public String getRecordBy() {
		return this.recordBy;
	}

	public void setRecordBy(String recordBy) {
		this.recordBy = recordBy;
	}

	public String getRecordEnterBy() {
		return this.recordEnterBy;
	}

	public void setRecordEnterBy(String recordEnterBy) {
		this.recordEnterBy = recordEnterBy;
	}

	public String getScientificNameAuthorship() {
		return this.scientificNameAuthorship;
	}

	public void setScientificNameAuthorship(String scientificNameAuthorship) {
		this.scientificNameAuthorship = scientificNameAuthorship;
	}

	public String getCountry() {
		return this.country;
	}

	public void setCountry(String country) {
		this.country = country;
	}

	public String getDarwinCountry() {
		return this.darwinCountry;
	}

	public void setDarwinCountry(String darwinCountry) {
		this.darwinCountry = darwinCountry;
	}

	public String getCounty() {
		return this.county;
	}

	public void setCounty(String county) {
		this.county = county;
	}

	public String getStateProvince() {
		return this.stateProvince;
	}

	public void setStateProvince(String stateProvince) {
		this.stateProvince = stateProvince;
	}

	public String getTown() {
		return this.town;
	}

	public void setTown(String town) {
		this.town = town;
	}

	public Date getVerbatimEventDate() {
		return this.verbatimEventDate;
	}

	public void setVerbatimEventDate(Date verbatimEventDate) {
		this.verbatimEventDate = verbatimEventDate;
	}

	public Date getBeginEventDate() {
		return this.beginEventDate;
	}

	public void setBeginEventDate(Date beginEventDate) {
		this.beginEventDate = beginEventDate;
	}

	public Date getEndEventDate() {
		return this.endEventDate;
	}

	public void setEndEventDate(Date endEventDate) {
		this.endEventDate = endEventDate;
	}

	public String getWatermark() {
		return this.watermark;
	}

	public void setWatermark(String watermark) {
		this.watermark = watermark;
	}

	public String getWatermarkDate() {
		return this.watermarkDate;
	}

	public void setWatermarkDate(String watermarkDate) {
		this.watermarkDate = watermarkDate;
	}

	public String getSheetNotes() {
		return this.sheetNotes;
	}

	public void setSheetNotes(String sheetNotes) {
		this.sheetNotes = sheetNotes;
	}

	public String getGeneralNotes() {
		return this.generalNotes;
	}

	public void setGeneralNotes(String generalNotes) {
		this.generalNotes = generalNotes;
	}

	public String getCollectorNotes() {
		return this.collectorNotes;
	}

	public void setCollectorNotes(String collectorNotes) {
		this.collectorNotes = collectorNotes;
	}

	public Integer getWrittenNumber() {
		return this.writtenNumber;
	}

	public void setWrittenNumber(Integer writtenNumber) {
		this.writtenNumber = writtenNumber;
	}

	public Integer getFolderNumber() {
		return this.folderNumber;
	}

	public void setFolderNumber(Integer folderNumber) {
		this.folderNumber = folderNumber;
	}

	public String getHerbarium() {
		return this.herbarium;
	}

	public void setHerbarium(String herbarium) {
		this.herbarium = herbarium;
	}

	public String getIdentificationQualifier() {
		return this.identificationQualifier;
	}

	public void setIdentificationQualifier(String identificationQualifier) {
		this.identificationQualifier = identificationQualifier;
	}

	public String getRecordNumber() {
		return this.recordNumber;
	}

	public void setRecordNumber(String recordNumber) {
		this.recordNumber = recordNumber;
	}

	public Date getDateEntered() {
		return this.dateEntered;
	}

	public void setDateEntered(Date dateEntered) {
		this.dateEntered = dateEntered;
	}

	public Date getDateLastModified() {
		return this.dateLastModified;
	}

	public void setDateLastModified(Date dateLastModified) {
		this.dateLastModified = dateLastModified;
	}

	public Integer getMissingInfo() {
		return this.missingInfo;
	}

	public void setMissingInfo(Integer missingInfo) {
		this.missingInfo = missingInfo;
	}

	public Integer getImageError() {
		return this.imageError;
	}

	public void setImageError(Integer imageError) {
		this.imageError = imageError;
	}

	public Date getExportDate() {
		return this.exportDate;
	}

	public void setExportDate(Date exportDate) {
		this.exportDate = exportDate;
	}

	public Set<SpecCollectorMap> getSpecCollectorMaps() {
		return this.specCollectorMaps;
	}

	public void setSpecCollectorMaps(Set<SpecCollectorMap> specCollectorMaps) {
		this.specCollectorMaps = specCollectorMaps;
	}

	public DataHandler getHandler() {
		return handler;
	}

	public void setHandler(DataHandler handler) {
		this.handler = handler;
	}

}